perm filename MSS.F4[1,LCS]2 blob sn#084617 filedate 1974-01-30 generic text, type T, neo UTF8
C  ********** DISPLAYS MUSIC AND DRAWS IT ON THE PLOTTER **********
C *** READS DATA FROM CLFX, TAIL, FERM, BREP, REST, DRAW1, DRAW2

	IMPLICIT INTEGER(A-Q,S-Z)
	REAL DIS,PWDS,DISX,A,B,STFF,CENTR,POS
	COMMON /DL/X22,SAVER,NAME/RRJJ/RJJ(20)
	DIMENSION RPOS(2,40),LST(13),DP(-3/4),LX(14),LY(7),R(8,100)
	COMMON/FRMT/F78F(1),FA1(1),FA5(1),ASK/SIZ/RSZ,JCEN,KCEN
	COMMON/SCM/V(78),ISCR,LCNT,RSTF,LIST(200),REND
	COMMON/ALF/INP(72),ML/XRN/RN(4000)/STF/RSTFAC(8),RSTJC
	COMMON /PLTR/PLT,RHT,DIS/PTR/PWDS(250),ITEM,L,I,IX
	COMMON RJB,JA,CENTR,JB,RJQ(20),JQ(20)/POSI/STFF(8),JJB,POS
	COMMON/DPY/ST(4000),WDS(250),MEDIT,GO	
	EQUIVALENCE (JC,JQ(1)),(JD,JQ(2)),(JE,JQ(3)),(RJE,RJQ(3))
	1,(RJF,RJQ(4)),(JG,JQ(5)),(JH,JQ(6)),(JI,JQ(7)),(JJ,JQ(8))
	1,(JK,JQ(9)),(JF,JQ(4)),(RJG,RJQ(5)),(RJD,RJQ(2)),(IT,LY(7))
	1,(RJC,RJQ(1)),(I2,INP(2)),(I1,INP(1)),(RXGP,WDS(250))
	1,(RJK,RJQ(9)),(RJQJ,RJQ(8)),(SET4,RN(3920)),(R,RN(3001))
	1 ,(TOP,ST(3999)),(BOT,ST(4000)),(RJH,RJQ(6)),(RJI,RJQ(7))
	1,(RPOS(1,1),RN(3921)),(ST2,ST(2)),(IBL,LY(1)),(RJM,RJQ(11))
	1,(IE,LX(4)),(IP,LX(10)),(IM,LX(9)),(II,LX(6)),(IS,LX(12))
	DATA STFF/-369.0,-246.0,-123.0,0.0,123.0,246.0,369.0,450.0/
	1 ,LST/'NOTE','REST','CLEF','LINE','NUMB',
	1 'MISC','KSIG','SLUR','BEAM','STAFF','METER','TRILL','WORD'/
	1,DP/8*1/,LX/'A','C','D','E','G','I','J','L','M','P','R',
	1 'S','U','X'/
	1,LY/' ','A','B','D','E','F','T'/

	TOP2=-999
	RXGP=0
	I1=0
C  RESTART PROG. OR TYPE 'F' TO FINISH PLOTTER.(IT'S NOT AUTOMATIC.)
2	CALL DPYSET(1,ST,4000)
	CALL TYPLOC(-200,-511)
	CALL DPYBRT(5)
	RPOS(1,1)=0
	PLOTIT=0
	RSZ=.845
	TOP=-999
	BOT=999
	JSTF=-1
	X22=0
	JCEN=0
	KCEN=0
	PLT=0
	PWDS(1)=1.
	EDX=-1
	SAVER=7
	DO 1402 K=1,8
1402	RSTFAC(K)=1.
	REDIT=999.
	M=1
	ITEM=0
	ZERO=-1
	WDS(1)=4
C  DATA IN DPY ARRAY STARTS AT WD.4!
	I=1
1100	SCORE=-1
1000	IREADX=0
	KNT=0
	CALL DPYOUT(1)
	IF(SCORE.OR.REND)GO TO 58
C   REND=-1 LAST TIME IN SCORE SECTION
	CALL SCMSS
	I=ISC
	ITEM=ISITEM
	ST2=WDS(ITEM+1)
	CALL ACCPOG(1)
	IF(REND.NE.100)GO TO 553
C   FOR ESCAPE FROM 'SCORE' SECTION
	GO TO 1100
58	GO=-1
	GO TO 5505


11	CALL NOTWRT
57	IF(PLT)GO TO 6120
	IF(M.LE.I.AND.GO)CALL DPYOUT(1)
	IF(JA.EQ.101)GO TO 5531
	ITEM=ITEM+1
	IF(GO.GT.0)GO TO 20000
	K=ST2
	IF(X22.EQ.0)GO TO 20000
	CALL BOX(IBOX,RBOX,STFF)
	ST2=K
20000	WDS(ITEM+1)=ST2
	IF(EDX.NE.-1.AND.M.LT.I)GO TO 6120
	IF(PLOTIT.EQ.-2)GO TO 2311
C  SL=SAVE AFTER RESETTING LENGTH OF PAGE.  (SEE I2 IN SCX)
	PWDS(ITEM+1)=I
	PLT=0
	IF(GO.NE.0)GO TO 5531
	CALL DPYOUT(1)
	GO=-1

5531	IF(IREADX.EQ.-2)GO TO 653
	IF(JSTF)GO TO 55
	JA=JSTF
	JSTF=-1
	GO TO 889
C PUT IN A STAFF
55	IF(IREADX.OR.SCORE.EQ.0)GO TO 553
5505	SVST=ST2
C CATCHES TYPO WITH 'C'
	K=ITEM+1
	IF(X22.EQ.0)GO TO 5503
	K=X22
	L=RN(MEDIT+1)
	IF(L.EQ.16)L=13
	IF(L.EQ.18)L=11
	IF(L.EQ.30)L=12
	IF(L.EQ.11)L=0
C  CHANGE CODE NUMS FOR 18 AND 30 ****************
	TYPE 427,LST(L),(RN(L),L=MEDIT+1,MEDIT+3)
	IF(YED.LT.2)GO TO 5500
C   YED IS SET AT 426
5502	DO 5501 L=4,YED+2
5501	TYPE 4271,L,RN(MEDIT+L)
	GO TO 5500
891	DEL=0
C   THIS NOT USED IF DEL=0 AT LN32510 ***********
	GO TO 6531

5503	CALL HYDPOG(3)
C  TO DELETE VERTICAL LINE (55)
	KED=0
5500	IF(DEL)GO TO 891
	IF(IREADX)GO TO 653
5504	IF(I1.EQ.IP)GO TO 2311
59	TYPE 56,NAME,K,SVST
	JAB=JA
	SCORE=-1
	ACCEPT 89,INP
	DO 1313 LKX=1,14
1313	IF(I1.EQ.LX(LKX))GO TO 2313
	LKX=0
2313	LKX=LKX+1
C  'SA'=SAVE; 'S'=SET; 'SB'=SAVE BIG; 'ST'=STAFF; 
	IF(X22.NE.0)GO TO(87,884,883,883,5313,87,884,87,883,87,59,883
	1,15,883,883),LKX
	GO TO(87,13,7555,14,5313,120,884,7555,883,7555,311,883,15,883
	1,59),LKX
C                  A   C   D   E   G   I  J   L   M     P   R   S U(X
C  HERE A=ALTER A GROUP, DE=DELETE A GROUP
C  'DP'=DISPLAY OR HIDE WHICH STAVES.  D=DOWN N
14	IF(I2-IE)883,13,884
13	GO=1
	CALL GRED
	IF(JA.EQ.98)GO TO 5533
	KNT=0
	SCORE=0
	GO TO 65
15	DO 3313 LKY=1,7
3313	IF(I2.EQ.LY(LKY))GO TO(312,3121,3121,3121,312,115,884),LKY
C                               BL  A    B     D    E   F   T
C  'SF'= SAVE AND FIXUP (I HOPE THIS IS TEMPORARY)
115	CALL FIXUP
	GO TO 5505
C  RESETS FACTORS FOR SAVE AND REDISPLAY
3121	IF(X22.NE.0)GO TO 5505
	SAVER=7
	CALL SAVIT
	GO TO 5505
312	JA=55
	RJB=RN(MEDIT+2)
	RJC=55.
	GO TO 6531
C  ABOVE FOR 'S'ET ALIGNMENT
C  'S'=SET ALIGNMENT, 'A'=ALIGN IT.  'M'=MOVER 'C'= COPIER
C  'E'=EDIT; 'I'=ITEM; 'G'=GET; 'GM'=GET MORE;  'P' #S = PLOT IT
5313	K=-1
	DO 882 JA=3,10
882	IF(INP(JA).NE.IBL)GO TO 884
	GO TO 883
885	FORMAT(A2,21F)
884	REREAD 885,K,RJB,RJQ
	JA=55
	IF(I1.EQ.II)JA=22
	IF(I2.EQ.IT)JA=44
	IF(I2.NE.'P')GO TO 6531
	IF(RJB.GT.5)GO TO 1886
C  GO BACK AND RESET ALL
	K=RJB
	JA=0
C  USE '5' FOR STAFF 0.
888	IF(K.EQ.5)K=0
	DP(K)=-DP(K)
	JA=JA+1
	K=RJQ(JA)
	IF(K.EQ.0)GO TO 85
C  JUMP OUT IF RJQ(JA)=0
	GO TO 888
C  TO GET BACK ALL LINES TYPE 6+
311	JA=0
	ML=0
	IF(I2.NE.'X')GO TO 884
1886	DO 2886 K=-3,4
2886	DP(K)=1
	IF(I1.NE.IP)GO TO 8851
C PXG OR PXC RESETS 'DP'
C  TO GET BACK OTHERS - 'DPY N' AGAIN WILL DO.
2311	CALL PLTCMD
	IF(PLOTIT.EQ.0)GO TO 3005
	I1=IP
	PLOTIT=-1
	GO TO 6531
C  'PXG' OR 'PXC' GOES TO 'PLOT COMMAND' ROUTINE

881	IF(I1.GT.0)GO TO 87
C   JUMP IF I1 IS NOT A LETTER (K>0=NUM, K<0=LET.)
883	IF(I2.EQ.IS)GO TO 2
C  TYPE 'RS' TO RESTART.
	IF(IX.EQ.I.AND.I1.EQ.'C')GO TO 72
	CALL EDIT(JJA,RJJB)
	GO TO 6531
89	FORMAT(72A1)
C  TYPE L, R, U OR D OR EDIT TO MOVE LAST ENTERED ITEM.

87	REREAD 1,JA,RJB,RJQ
	IF(K)JA=55
C   ED 47 -1 = 55 47 -1, ETC.
	IF(JA.EQ.101)GO TO 11
	IF(JA.GT.0)SAVER=SAVER-1
	IF(SAVER.AND.X22.EQ.0)CALL SAVIT
C  SAVES EVERY 7TH TIME AROUND
	IF(JA.EQ.14.OR.JA.EQ.16.OR.JA.EQ.144)GO TO 88
	GO TO 6531
188	RJB=0
88	RSTJC=RSTFAC(JC+4)
	SET4=RJB
C  SET4 IS NEG. FOR AUTOMATIC STAFF 4 SETUP.
	IF(JA.NE.14)GO TO 889
C NEXT PUTS UP STAFF IF IT WASN'T THERE ALREADY
	SAVER=-1
	DO 1889 K=1,I
	J=PWDS(K)
	IF(RN(J+1).NE.10)GO TO 1889
	IF(RN(J+3).EQ.RJC)GO TO 889
1889	CONTINUE
C DIDN'T FIND THIS STAFF
	JSTF=JA
	JA=10
	GO TO 6531
889	SCORE=0
	ISC=I
	ISITEM=ITEM
C   RETAINS ORIGINS OF SCORE SQUENCE
CC	DO 9532 K=1,8
	DO 9532 L=3001,3800
9532	RN(L)=0
C  CLEARS R( , ) ARRAY
	REND=0
	RSTF=RJC
	R(1,1)=JA
	R(2,1)=RJB
	R(3,1)=RJD
	R(4,1)=RJE
	R(5,1)=RJF
	KNT=0
9533	CALL SCMSS
	IREADX=-1
	IF(REND)GO TO 653
553	IF(SCORE)GO TO 6531
65	GO=1
C  SO DPYOUT COMES ONLY ONE PER LINE.
653	KNT=KNT+1
C   NUM OF ITEMS IN LIST
	RJK=0
	RJQJ=0
	RJI=0
	JA=R(1,KNT)
	RJB=R(2,KNT)
	IF(JA.NE.100)GO TO 550
	IF(REND.NE.1.)GO TO 1000
C   =1 GOES BACK FOR MORE
	KNT=0
	IF(RJB.LT.0)GO TO 188
C  WILL READ ANOTHER STAFF
	GO TO 1100
C  100 STOPS READER.
550	DO 7531 K=1,6
7531	RJQ(K)=R(K+2,KNT)
	IF(RJG.EQ.1.9)RJQJ=1
C  FOR GRACE NOTE SLASH
CC	RJI=AMOD(RJC,1.)
	IF(JA.EQ.9)GO TO 16
	IF(JA.NE.999)GO TO 6531
C  999 MEANS P9 AND P10 ARE USED WITH BEAMS
	JA=9
	RJQ(8)=R(3,KNT)
	RJI=R(2,KNT)
	RJB=RJJB
	RJC=RJJ(1)
16	RJK=-1
6531	M=1
	EDX=-1
	IF(JA.EQ.222)GO TO 72
	IF(JA.EQ.2222)GO TO 73
	DO 5532 K=1,10
5532	JQ(K)=RJQ(K)
	IF(JA.NE.99.AND.JA.NE.98)GO TO 7542
	CALL DELETE
	IF(JA.EQ.99)GO TO 425
5533	X22=0
	GO=-1
	CALL DPYNEW
	GO TO 55

590	IF(PLOTIT.EQ.-1)GO TO 121
	I1=0
	GO TO 243
C  GOES TO PLOTTER
7542	IF(I1.EQ.'P')GO TO 590
C  X22= ITEM# WHEN EDITING OR DELETING.
	IF(X22.NE.0)GO TO 5511
	IF(JA.GT.0)GO TO 155
	IF(RJB.NE.0)GO TO 6221
C  FOR UP, DOWN, LEFT, RIGHT
	GO TO 5505
C  GOES BACK IF NEGATIVE AND NOT IN EDIT MODE.
155	IF(JA.EQ.24)GO TO 24
	IF(JA.EQ.22)GO TO 42  
	IF(JA.EQ.44)GO TO 44
	IF(JA.EQ.55)GO TO 554
	IF(JA.EQ.333)GO TO 6333
	IF(IABS(JC).GT.5.OR.(IABS(JD).GT.50.AND.JA.GT.4.AND.
	1 JA.NE.9.AND.JA.NE.10))GO TO 5505
C  CATCHES SOME TYPO ERRORS IN P3 AND P4.
C  AVOIDS EXIT AFTER TYPO ERROR
	IF(JA.EQ.21.OR.JA.EQ.19)GO TO 61
	GO TO 60

33	JB=RJB
	RJB=RJJ(JB-2)
	IF(JB.EQ.2)RJB=RJJB
	TYPE 1,JB,RJB
C  TYPE 33,N TO SEE FULL CONTENTS OF PARAM. N.
	GO TO 5505

24	GO=0
	IF(ABS(RJB).GT.99)GO TO 5505
	IF(RJB.NE.0)GO TO 241
	GO=-1
243	RJB=1.
C TO REDISPLAY WITH MAGNIFICATION - OR JUST RUN THROUGH DATA.
241	RSZ=.845*RJB
	JCEN=RJC*RSZ
	KCEN=RJD*RSZ
	RJB=0
	RJC=0
	RJD=0
	TOP=-999
	BOT=999
85	M=1
	I=PWDS(ITEM+1)
	ITEM=0
8552	ST2=3
8852	PLT=1
	EDX=0
	CALL ACCPOG(1)
	IF(JA.NE.24)GO=0
	GO TO 6120

6333	CALL LISTP(LST)
	GO TO 5505

172	CALL JUGGLE
272	CALL DPYNEW
	IF(JA.EQ.22)GO TO 424
C  FOR MOVING DIRECTLY TO NEW ITEM IN EDIT MODE.
	IF(ZERO)GO TO 55
	X22=ZERO
	ZERO=-1
	IF(JA.EQ.55)GO TO 554
	IF(JA.EQ.44)GO TO 44
	IF(KED.NE.0)GO TO 244
	GO TO 425

C  55,POS  -- SETS UP ALIGNMENT
554	CALL BOX(-1,RJB,STFF)
	IF(JD.EQ.0)KED=-1
	RITEM=RJD
C  FOR 'ED POS., STF., CODE#'
	IF(JC.GT.4)KED=-2
	RLINE=RJB
	RJB=RJC
	GO TO 45

C  '22,0' EDITS LAST ITEM ENTERED
42	IF(RJB.NE.0)GO TO 242
	X22=ITEM
	GO TO 429
44	KED=1	
	RITEM=RJC
C  'ST', STF#, CODE# (IF 0, ALL ITEMS COME UP)
45	REDIT=RJB
C  THE STAFF #
	JED=1
244	X=ITEM  
	IF(JED.GT.X)GO TO 444
	DO 144 K=JED,X
	L=PWDS(K)
	IF(KED.EQ.-2)GO TO 654
C  -2 LOOKS AT ALL ITEMS NEAR VERT. LINE, -1 ON SINGLE STAFF.
	IF(RN(L+3).NE.REDIT)GO TO 144
	IF(KED)GO TO 654
	IF(RITEM.NE.0.AND.RITEM.NE.RN(L+1))GO TO 144
	IF(JA.NE.55)GO TO 344
654	IF(ABS(RLINE-RN(L+2)).LT.5.0)GO TO 344
144	CONTINUE
444	REDIT=999.
C  NO MORE ON LINE
	RJB=0
C   SO IT WILL RETURN IF NOTHING IS FOUND WITH 'ED' OR 'ST'.
	GO TO 73
344	JED=K+1
C  FOR NEXT TIME AROUND
	X22=K
	GO TO 429
C  CR MOVES ALONG GIVEN LINE,  222 LEAVES THIS MODE

91	CALL ACCPOG(1)
	IF(I.EQ.IX)ITEM=ITEM-1
	GO TO 142
242	IF(X22.GT.0)GO TO 5511
142	IF(RJB.NE.0)GO TO 424
	IF(REDIT.NE.999..AND.JA.GE.0)GO TO 244
	X22=X22+1
	IF(JA)X22=X22-1+JA
	IF(X22.LT.1)X22=1
	GO TO 425
424	X22=RJB
425	IF(X22.GT.ITEM)GO TO 73
C  LEAVES EDIT MODE.
429	IX=I
	MEDIT=PWDS(X22)
	J=2
426	Y=RN(MEDIT)+J
	CALL LOOP(0,Y,1,I,MEDIT,RN)
	JJA=RN(I+1)
	YED=Y-2
	L=I+2
	DO 422 K=1,11
	IF(K.GT.YED)GO TO 423
	RJJ(K)=RN(L+K)
	GO TO 422
423	RJJ(K)=0
422	CONTINUE
	RJJB=RN(L)
	IF(GO.GT.0)GO TO 4231
C  NO BOX WHEN IN GROUP EDIT ROUTINE
	IBOX=I
	RBOX=RJJ(1)
	CALL BOX(IBOX,RBOX,STFF)
4231	ITEM=ITEM+1
	ST2=WDS(ITEM)
	GO TO 55
427	FORMAT(1XA5/,F4.0,F7.2,F6.2,$)
4271	FORMAT('+  (',I2,')',F7.2,$)

C  FOR EDITING
5511	IF(JA.EQ.55)GO TO 420
220	IF(JA.NE.22)GO TO 720
C  'I, #' WILL MOVE TO ANOTHER ITEM WHEN ALREADY IN EDIT MODE.
	KED=0
	JED=0
	GO TO 72
720	IF(JA.EQ.44)GO TO 420
	IF(JA.EQ.33)GO TO 33
	IF(JA.GT.13.OR.JA.EQ.1)GO TO 5505
C  PARAM NUM TOO HIGH?
C  LOOKS FOR NEXT ITEM TO EDIT IF <CR>
4221	IF(X22.EQ.0.OR.RJB.NE.0)GO TO 5517
C  BACKS UP WHEN IN EDIT MODE.

	IF(JA.GT.0)GO TO 5518
	IF(I.EQ.IX)GO TO 91
	ZERO=X22+1
C  '0' AFTER AN EDIT ENDS THE EDIT AND GETS NEXT ITEM FOR EDIT.
72	IF(X22.EQ.0)GO TO 55
	IF(KED.EQ.0)REDIT=999.
320	IF(I.NE.IX)GO TO 172
	ITEM=ITEM-1
C  TO DELETE AN ITEM
73	X22=0 
	CALL DPYNEW
	IF(REDIT.EQ.999.)GO TO 441
	IF(JA.EQ.55)GO TO 554
	IF(JA.EQ.44)GO TO 44
441	IF(RJB.EQ.0.OR.RJB.GT.ITEM)GO TO 55
	GO TO 424
C  DELETION IN EDIT MODE DOES NOT LEAVE MODE.

5517	IF(JA.EQ.0)GO TO 6221
5518	IF(JA.EQ.2)GO TO 7221
	IF(JA.GE.22)GO TO 55
	RJJ(JA-2)=RJB
	RJB=RJJB
	GO TO 6222

7555	CALL MOVER
	IF(RJC.EQ.99)GO TO 5504
C   99=BACKUP OUT OF MOVER ETC.
8853	IF(JJB)GO TO 57
	M=PWDS(JJB)
	I=PWDS(ITEM+1)
	ITEM=JJB-1
	ST2=WDS(JJB)
C SO IT DOESN'T HAVE TO GO THROUGH ALL ITEMS
	GO TO 8852

8851	IF(I1.NE.IP)GO TO 85
	GO TO 6531

420	REDIT=0
211	IF(RJB.NE.0)GO TO 320
	IF(KED.GE.0)RLINE=RJJB
	RJB=RLINE
C  FOR '55' ALIGNING
7221	RJJB=RJB
6222	IF(JQ(1).EQ.0)GO TO 6221
C  ARRAYS NEED 2O LOCATIONS HERE.
C CHNG PARAMS WITH PAIRS OF NUMS.(EG. 2,122  4,13  5,-2 ETC.)
	DO 1222 K=1,20,2
	L=JQ(K)
	IF(L-2)6221,2222,3222
3222	RJJ(L-2)=RJQ(K+1)
	GO TO 1222
2222	RJJB=RJQ(K+1)
	RJB=RJJB
1222	CONTINUE
C***  LOOP SET TO 10 (20 IN ARRAY!)
6221	DO 5514 K=1,11
	RJQ(K)=RJJ(K)
5514	JQ(K)=RJQ(K)
	JA=JJA
	ITEM=ITEM-1
	IF(ITEM)ITEM=0
	ST2=WDS(ITEM+1)
	I=PWDS(ITEM+1)
	CALL DPYNEW

60	IF(DP(JC))GO TO 57
	RSTJC=RSTFAC(JC+4)
	RD=0
	IF(JA.EQ.50)JA=16
C  ABOVE SHOULD BE TAKEN OUT AT SOME FUTURE DATE. (12/73)
	IF(RJB.LT.1000)GO TO 66
	RD=RJB
	IF(JA.EQ.8)RJM=RJB/1000.
	CALL RNOTE(RJB)
C IF RJB>1000 IT FINDS TRUE RJB THROUGH NOTE NUMB.
66	IF(EDX.EQ.0.OR.I1.EQ.IP)GO TO 5541
	RJJB=RJB
	JJA=JA
	IF(JA.NE.16.OR.RJI.EQ.0)GO TO 160
CC360	RJI=0
	RJB=RN(IFIX(PWDS(X22-1))+2)+39.6*RSTJC*RJE
C  PUTS 13TH(+) LETTER TIN RIGHT POS. AFTER HORIZ. MOVE.
160	IF(JA.EQ.1.AND.RJH.EQ.0)RJH=999.
C  999=0 FOR STEM EXTENSIONS.
	CNT=1
	DO 5543 K=1,9
C  10/6/73 ABOVE WAS ,11
	RA=RJQ(K)
	IF(RA.NE.0)CNT=K
5543	RJJ(K)=RA
C  USES ONLY 10 PARAMETERS BEYOND JA, JB
2554	IF(PLT.NE.0)GO TO 5541
	IF(JA.EQ.9)CALL HOMER
	IF(JA.NE.6)GO TO 1261
	IF(JF.NE.0)RJM=-1

1261	IF(RJM.NE.0)CALL HOMER
C  IF P13≠0 ANY ITEM WILL LINE UP WITH ANY OTHER ITEM. P13 IS RESET=0
C **** FOR '0' EDITS ******
261	RN(I)=CNT
	RN(I+1)=JA
	I=I+2
	RN(I)=RJB
	IF(RD.NE.0)RN(I)=RD
C TO SAVE NOTE NUMBS IN P2.
	DO 4554 K=1,CNT
4554	RN(I+K)=RJQ(K)
3554	I=CNT+1+I
C  WHAT ABOUT EDITS?*******
5541	POS=STFF(JC+4)
	JB=RHORZ(RJB)
C  LINE IS DIVIDED INTO 200 POINTS.
	CENTR=POS
551	IF(JA.EQ.4.OR.JA.EQ.10)GO TO 25
	IF(JA.EQ.7)GO TO 81
	IF(JA.LE.12.OR.JA.EQ.30)GO TO 11
	IF(JA.EQ.18)GO TO 80
	IF(JA.NE.88)GO TO 116
	IF(RJB.EQ.0)RJB=1
C  USE ONLY ONE 88 CHANGE PER STAFF!!!! ********
	RSTFAC(JC+4)=RJB
C   88,FAC,STF   SETS STAFF SIZE FACTOR(ALSO CAN BE DONE WITH 10)
	GO TO 57
116	IF(JA.NE.16.AND.JA.NE.20)GO TO 120
	CALL ALPHA
	GO TO 57

81	CALL KSIG
	GO TO 57

80	CALL METER
	GO TO 57

61	CALL HOMER
	GO TO 8853

25	CALL ITMSUB
C   BAR LINES, BEAMS, STAFF LINES ****
	GO TO 57

C  TO GET DISPLAY: 'G'; 'GM'  ADDS TO DPY; 
120	IF(I.NE.1.AND.I2.NE.IM)GO TO 5505
C  'GM'=GET MORE
	TYPE 21
	ACCEPT FA5,NAME
	IF(NAME.EQ.'99')GO TO 5505
	IF(NAME.NE.IBL.AND.LOOKD(NAME).EQ.0)GO TO 120
C  FUNC. LOOKD IS 'FAIL' PROG. TO CHECK ON LOOKUPS
3005	REWIND 21
C  GUARDS AGAINST LOSSAGE!
	PLOTIT=-1
	IF(I1.NE.'G')PLOTIT=-2
2005	IF(NAME.EQ.IBL)GO TO 2200
	CALL IFILE(21,NAME)
C  JUMP TO READ BIG FILES
2200	J=ITEM+1
2202	READ(21,END=2207),X,Y,
	1 (PWDS(K),K=J,X+J),(RN(K),K=I,Y+I-2),ISCR,(V(K),K=1,ISCR),
	1 LCNT,(LIST(K),K=1,LCNT)
CC PUT IN NEXT YEAR(12/73)1 LCNT,(LIST(K),K=1,LCNT),RSTFAC,STFF
2207	IF(Y.EQ.0)GO TO 2205
	ITEM=ITEM+X
	IF(I2.EQ.IM)GO TO 2203
	I=Y
	READ(21,END=8851),RSTFAC,STFF
	IF(I1.EQ.IP)GO TO 6531
	READ(21,END=8851),ST2,(ST(K),K=1,ST2+2),(WDS(K),K=1,ITEM+1)
	CALL DPYNEW
	GO TO 5505
2205	TYPE 2206
	CALL EXIT
2206	FORMAT(' **** UNPACK IT! ****')

2203	RA=I-1
	DO 2204 K=J,J+X
2204	PWDS(K)=PWDS(K)+RA
	GO TO 85
121	IF(PLOTIT.EQ.0)GO TO 5504
5121	CALL PLTSRT
C  IF P5=0 MOVES UP AT START, IF P6=0 MOVES UP AT END.
	PLT=-1-JH
C  (JH) P8=1 OR 2 FOR 2-PASS PLOTS
	M=I
	I=I+M-1
	IF(RJB.EQ.0)RJB=1.
	DIS=RJB*1.24
	IF(RJC.EQ.0)RJC=RJB
	RHT=RJC*1.2
C   1.24 AND 1.2 ARE TO FIT 8 1/2 X 11 FORMAT
	BOT=-BOT*RHT
	IF(TOP2.EQ.-999)GO TO 8121
	BOT=BOT+TOP2
	GO TO 9121
8121	CALL PLOTS(K)
	RXGP=995.-BOT
9121	NOMOVE=RJF+RJG*148.*RJC
C  RJF=1 FOR NO MOVE AT END.  RJG=# OF STAVES TO MOVE FOR NEW STAFF 0.
	IXGP=JD
C (JD) P4=1 FOR XGP OUTPUT
	IF(JE.NE.0)GO TO 1122
	IF(RJD.EQ.0)GO TO 6121
	IF(TOP2.NE.-999)RXGP=RXGP-BOT
C  MOVES 0 POINT OVER EACH TIME.
	GO TO 1122
6121	CALL PLOT(0,BOT,-3)
C  MOVES PLOTTER UP IF P5=0.
1122	X22=IXGP

C  NEXT RUNS THROUGH DATA WITH NEW CHANGES.
6120	IF(M.GE.I)GO TO 7120
	CNT=RN(M)
C  CLEARS INPUT ARRAY, USES ONLY 12 PARAMS.
	DO 6220 K=CNT+1,10
	JQ(K)=0
6220	RJQ(K)=0
	JA=RN(M+1)
	M=M+2
	RJB=RN(M)
	DO 9120 K=1,CNT
	RJQ(K)=RN(M+K)
9120	JQ(K)=RJQ(K)
	M=CNT+M+1
	IF(EDX.LE.0)GO TO 60
	GO TO 5505

7120	M=1
	IF(EDX)GO TO 71201
	IF(PLT.EQ.1)EDX=-1
	PLT=0
C  RETURNS FOR 'SL'=SAVE LAST
	GO TO 5505
71201	X=50*RHT
	TOP=TOP*RHT+X
	IF(NOMOVE.NE.0)TOP=0
	IF(NOMOVE.GT.1)TOP=NOMOVE
	IF(IXGP.EQ.0)CALL PLOT(0,TOP,3)
	TOP2=TOP
	GO TO 2
C  TO MOVE 'PLOTTER' FOR XGP OUTPUT
CC7121	CALL PLOT(0,TOP,3)
C  MOVES PLOTTER UP
C  ALWAYS START PLOT WITH BOTTOM UNIT ON PAGE AND WORK UP.
CC	TOP2=TOP
CC	GO TO 2

56	FORMAT(/1XA5,'  TYPE FOR ITEM #',I3,I/)
1	FORMAT(I,24F)
21	FORMAT(' FILE NAME?'/)
	END